#!/usr/bin/env perl
use strict;
use warnings FATAL => 'all';

use Getopt::Long;

my (
	$command, $ssh_user, $orig_master_host, $orig_master_ip,
	$orig_master_port, $new_master_host, $new_master_ip, $new_master_port
);

#############################添加内容部分#########################################
my $vip = '172.31.159.200';
my $brdc = '172.31.159.255';
my $ifdev = 'eth0';
my $key = '0';
my $ssh_start_vip = "/usr/sbin/ip addr add $vip/24 brd $brdc dev $ifdev label $ifdev:$key;/usr/sbin/arping -q -A -c 1 -I $ifdev $vip;iptables -F;";
my $ssh_stop_vip = "/usr/sbin/ip addr del $vip/24 dev $ifdev label $ifdev:$key";
##################################################################################


GetOptions(
	'command=s' => \$command,
	'ssh_user=s' => \$ssh_user,
	'orig_master_host=s' => \$orig_master_host,
	'orig_master_ip=s' => \$orig_master_ip,
	'orig_master_port=i' => \$orig_master_port,
	'new_master_host=s' => \$new_master_host,
	'new_master_ip=s' => \$new_master_ip,
	'new_master_port=i' => \$new_master_port,
);

exit &main();

sub main {

	print "\n\nIN SCRIPT TEST====$ssh_stop_vip==$ssh_start_vip===\n\n";

	if ( $command eq "stop" || $command eq "stopssh" ) {

		my $exit_code = 1;
		eval {
			print "Disabling the VIP on old master: $orig_master_host \n";
			&stop_vip();
			$exit_code = 0;
		};
		if ($@) {
			warn "Got Error: $@\n";
			exit $exit_code;
		}
		exit $exit_code;
	}
	elsif ( $command eq "start" ) {

		my $exit_code = 10;
		eval {
			print "Enabling the VIP - $vip on the new master - $new_master_host \n";
			&start_vip();
			$exit_code = 0;
		};
		if ($@) {
			warn $@;
			exit $exit_code;
		}
		exit $exit_code;
	}
	elsif ( $command eq "status" ) {
		print "Checking the Status of the script.. OK \n";
		exit 0;
	}
	else {
		&usage();
		exit 1;
	}
}

sub start_vip() {
	`ssh $ssh_user\@$new_master_host \" $ssh_start_vip \"`;
}

# A simple system call that disable the VIP on the old_master
sub stop_vip() {
	`ssh $ssh_user\@$orig_master_host \" $ssh_stop_vip \"`;
}

sub usage {
	print
	"Usage: master_ip_failover --command=start|stop|stopssh|status --orig_master_host=host --orig_master_ip=ip --orig_master_port=port --new_master_host=host --new_master_ip=ip --new_master_port=port\n";
}
